<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
//        2.1. 快捷查询
//        $row = Db::name('user')
//            ->where('id', '=', 5)
//            ->find();
//        $row = Db::name('user')
//            ->where('id', 'in', [1,6,9,122])
//            ->select();
//        $row = Db::name('user')
//            ->where('id', '>', 18)
//            ->where('name', 'like', '%王%')
//            ->select();
//        $row = Db::name('user')
//            ->where(['sex'=>'2'])
//            ->whereor(['province'=>'上海'])
//            ->select();

//        2.2. 批量查询
//        $row = Db::name('user')
//            ->where([
//                'id'=> ['between', '10,20'],
//                'sex'=>['eq', '0'],
//            ])
//            ->select();
//        $row = Db::name('user')
//            ->where('sex', 'eq', '0')
//            ->where('id', ['between', '1,3'], ['in', [6,66,666]], 'or')
//            ->select();

//        2.3. 区间查询
//        $row = Db::name('user')
//            ->where('id', ['>',2],['<', 15])
//            ->select();

//        2.4. 多表查询

//            1). 手动多表
//        $row = Db::field('u.name uname, l.name lname')
//            ->table(['user'=>'u', 'lover'=>'l'])
//            ->where('u.id=l.user_id')
//            ->select();

//            2). JOIN
//        $row = Db::table('user')
//            ->alias('u')
//            ->field(['u.name'=>'un', 'l.name'=>'ln'])
////            ->join('lover l', 'u.id=l.user_id', 'RIGHT')
//            ->join('lover l', 'u.id=l.user_id')
//            ->order('un')
//            ->select();

//            3). 视图
//        $row = Db::view('user', ['name'=>'uname'])
//            ->view('lover',['name'=>'lname'], 'user.id=lover.user_id')
//            ->select();

//        2.5. 聚合查询
//        $row = Db::name('user')->avg('age');
//        $row = Db::name('user')
//            ->field('province, count(id)')
//            ->group('province')
//            ->select();
//        $row = Db::name('user')
//            ->field('province, group_concat(name)')
//            ->group('province')
//            ->select();

//        2.6. 子查询
//            1.fetchSql 方式
//        // 构建子查询语句
//        $query = Db::table('hc_user')
//            ->field('id,name,sex,age')
//            ->where('sex', 'eq', 0)
//            ->fetchSql(true)
//            ->select();
////        var_dump($query);
//        // 组装完整的SQL去执行
//        $row = Db::table('('.$query.') u')
//            ->where('u.age', 'gt', 18)
//            ->order('id', 'desc')
//            ->select();

//            2.buildSql 方式
        $query = Db::table('hc_user')
            ->field('id,name,sex,age')
            ->where('sex', 'eq', 0)
            ->buildSql();
//        var_dump($query);
        $row = Db::table($query.' u')
            ->where('u.age', 'gt', 18)
            ->order('id', 'desc')
            ->select();

        var_dump($row);
    }
}
